/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is dual-licensed under either the MIT license found in the
 * LICENSE-MIT file in the root directory of this source tree or the Apache
 * License, Version 2.0 found in the LICENSE-APACHE file in the root directory
 * of this source tree. You may select, at your option, one of the
 * above-listed licenses.
 */

pub mod configured;
pub mod configured_frontend;
pub mod configured_node_ref;
pub mod configured_node_visit_all_deps;
pub mod configured_ref;
pub mod eval_result;
pub mod frontend;
pub mod lookup;
pub mod targets_map;
pub mod unconfigured;

/// Attributes on target nodes that are generated by buck, not provided by users.
pub mod attributes {
    /// The nodes that this node depends on.
    pub const DEPS: &str = "buck.deps";

    /// The oncall for this node.
    pub const ONCALL: &str = "buck.oncall";

    /// The package or the buildfile path.
    /// The package in `targets` command, but the buildfile path in `*query` commands.
    pub const PACKAGE: &str = "buck.package";

    /// A string representation of the target's rule type.
    pub const TYPE: &str = "buck.type";

    /// The target hash of this target.
    pub const TARGET_HASH: &str = "buck.target_hash";

    /// The callstack for this target.
    pub const TARGET_CALL_STACK: &str = "buck.target_call_stack";

    /// The configuration deps, deps that appear as conditions in selects.
    pub const CONFIGURATION_DEPS: &str = "buck.configuration_deps";

    /// The resolved execution platform for this node.
    pub const EXECUTION_PLATFORM: &str = "buck.execution_platform";

    /// The resolved target configuration for this node.
    pub const TARGET_CONFIGURATION: &str = "buck.target_configuration";

    /// The input source files/directories that this node uses.
    pub const INPUTS: &str = "buck.inputs";

    /// The package values for the package this target belongs to.
    pub const PACKAGE_VALUES: &str = "buck.package_values";

    /// The plugin lists on the node. This includes all plugins, regardless of whether they're
    /// propagated or actually used.
    pub const PLUGINS: &str = "buck.plugins";

    /// The package values for the package this target belongs to.
    pub const PACKAGE_CFG_MODIFIERS: &str = "buck.tree_modifiers";
}
